package com.zzh.partnersys.im.session;


import io.netty.channel.Channel;

/**
 * 会话管理接口
 * 成员uid=>绑定channel
 */
public interface Session {

    /**
     * 绑定会话
     * @param channel 哪个 channel 要绑定会�?
     * @param uid 会话绑定用户uid
     */
    void bind(Channel channel, Long uid);

    /**
     * 解绑会话
     * @param channel 哪个 channel 要解绑会�?
     */
    void unbind(Channel channel);

    /**
     * 解绑会话
     * @param uid 哪个 uid 要解绑会�?
     */
    void unbind(Long uid);

    /**
     * 获取属�?
     * @param channel 哪个 channel
     * @param name 属性名
     * @return 属性�?
     */
    Object getAttribute(Channel channel, String name);

    /**
     * 设置属�?
     * @param channel 哪个 channel
     * @param name 属性名
     * @param value 属性�?
     */
    void setAttribute(Channel channel, String name, Object value);

    /**
     * 根据用户id 获取 channel
     * @param uid 用户�?
     * @return channel
     */
    Channel getChannel(Long uid);
}
